# 2.将模拟博客园使用装饰器进行编写.
'''
login_status = {
    'username': None,
    'status': False,
}

def auth(func):
    def inner(*args,**kwargs):
        if login_status['status']:
            ret = func()
            return ret
        username = input('请输入用户名：').strip()
        password = input('请输入密码：').strip()
        if username == '太白' and password == '123':
            login_status['status'] = True
            ret = func()
            return ret
    return inner

@auth
def diary():
    print('欢迎访问日记页面')

@auth
def comment():
    print('欢迎访问评论页面')

@auth
def home():
    print('欢迎访问博客园主页')

diary()
comment()
home()
'''

# 3.看代码写结果：
'''
def wrapper(f):
    def inner(*args, **kwargs):
        print(111)
        ret = f(*args, **kwargs)
        print(222)
        return ret
    return inner

def func():
    print(333)

print(444)
func()
print(555)

# 444
# 333
# 555
'''

# 4.编写装饰器,在每次执行被装饰函数之前打印一句’每次执行被装饰函数之前都得先经过这里’。
'''
def func(f):
    def inner():
        print('每次执行被装饰函数之前都得先经过这里')
        f()
        # print("装饰后")
    return inner
@func
def index():
    print('我最帅')
index()
'''


# 5.为函数写一个装饰器，把函数的返回值 +100 然后再返回。
'''
def wrapper(f):
    def inner():
        b = f() + 100
        return b
    return inner
@wrapper
def func():
    return 7

result = func()
print(result)
'''

# 5.请实现一个装饰器，通过一次调用使被装饰的函数重复执行5次。
'''
def func(f):
    def index():
        for i in range(5):
            f()
    return index
@func
def inner():
    print("我最帅")
inner()
'''

# 7.请实现一个装饰器，每次调用函数时，将被装饰的函数名以及调用被装饰函数的时间节点写入文件中。
# 可用代码：
# import time
# struct_time = time.localtime()
# print(time.strftime("%Y-%m-%d %H:%M:%S", struct_time))  # 获取当前时间节点

# def func():
#     print(func.__name__)

# 函数名通过： 函数名.__name__获取。
'''
import time
def func(asgv):
    def index():
        user = inner.__name__
        struct_time = time.localtime()
        times = time.strftime("%Y-%m-%d %H:%M:%S", struct_time)
        with open(r"D:\代码\作业\day14",mode='a',encoding='utf-8')as f:
            f.write(f'{user}函数的调用时间是{times}\n')
        asgv()
    return index

@func
def inner():
    print('我太难了')
inner()
'''